home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48_2
/
chess
< prev
next >
Wrap
Internet Message Format
|
1995-03-31
|
44KB
Path: seq!spell
From: Pauli <grue@cs.uq.oz.au>
Subject: v01i050: chess - Chess v1.0 (includes HP28 source), Part01/01
Newsgroups: comp.sources.hp48
Keywords: chess
Followup-To: comp.sys.hp48
Summary: The chess program for the hp28/48
Approved: spell@seq.uncwil.edu
Checksum: 4154390022 (verify with brik -cv)
Submitted-by: Pauli <grue@cs.uq.oz.au>
Posting-number: Volume 1, Issue 50
Archive-name: chess/part01
BEGIN_DOC chess.doc
hi,
Due to rather heavy demand for my chess program for the 48, I've
decided to post it in its current incomplete form. I am not intending to
improve this program in the near future. If I ever write another chess
program for the 48, it will be machine code rather than RPL but don't
wait for it to appear.
Briefly, to make a move enter the start coords and the finish
coords of the piece being moved (e.g. e2e4 is the same a P-K4 in the initial
position). To give up early enter 'quit', to pause the game enter 'halt'
and to swap colours enter 'swap'. All entries (moves or special commands)
must be followed by the enter key. If you make an error, you can type in
the new command right away...the program only keeps the last four characters
typed.
After you type enter, be ready for a long wait. The program is very,
very slow. Some of my debugging messages are still in place and they relieve
the boredom a little. The program doesn't play a very good game, and it
plays very slowly. I originally wrote this just to prove that it could be
done (that was back on a HP28S). It was my first large programming effort
for the 28 and I've learnt a lot since then about how RPL works and I would
not write the program the same way if I was writing it now.
Thanks to Eddie (lost your e-mail address sorry) for converting the
graphics from the 28 version to the 48 version. The actual play should be
the same between the two versions.
Pauli
Paul Dale | Internet/CSnet: grue@cs.uq.oz.au
Dept of Computer Science| Bitnet: grue%cs.uq.oz.au@uunet.uu.net
Uni of Queensland | JANET: grue%cs.uq.oz.au@uk.ac.ukc
Australia, 4072 | EAN: grue@cs.uq.oz
| UUCP: uunet!munnari!cs.uq.oz!grue
f4e6g4Qh4++ | JUNET: grue@cs.uq.oz.au
END_DOC
For the HP48:
BYTES: #36C2h 9166
BEGIN_UU chess.uue
begin 666 chess
M2%!(4#0X+4&6*O!_HT0````$4%!!4@1T*G"7`@$``````&"6`````````)9W&
M*1````````!D$````````%>`Y`((8V]N<W1A;G3)HG*7`@``````````````2
M``````!AYH'D`@%9*S'P"@`#:V5Y`YTMX&$C="I`IP(L*G```&$L*G```&(L=
M*G```&,L*G```&0L*G```&4L*G```&8K,4"G`BPJ<```9RPJ<```:"PJ<```D
M:2PJ<```:BPJ<```:RPJ<```;"LQ0*<"+"IP``!M+"IP``!N+"IP``!O+"IPC
M``!P+"IP``!Q+"IP``!R*S%`IP(L*G```',L*G```'0L*G```'4L*G```'8LZ
M*G```'<L*G```'@K,4"G`BPJ\```14Y415(L*G```'DL*G```'HL*K```$1%F
M3"PJT```0D%#2RLQ0*<"+"I0```L*G```#<L*G```#@L*G```#DL*E```"LQJ
M0*<"+"I0```L*G```#0L*G```#4L*G```#8L*E```"LQ0*<"+"I0```L*G``7
M`#$L*G```#(L*G```#,L*G```"TK,4"G`BPJ4```+"IP```P+"IP```N+"IPP
M```@+"IP```K*S&P$@-SJ,%)(YTMX&$C,RD0````````$%#P&H?[T;8;O?LQ+
MNALS*1`````````0X-X:\Z("S1_&U]&['\;7,>PBA_N!FQSZ+I(L*K4OTMD"K
MV/M!*RHK,5#](CDVLA(#G#32V0(>-H*]'[2BDF,C*S'@/QHY-K(2`[(#4#!%,
M)21%5,"B`OT!L'4#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-RN
M`W(#<@-"`R(#,@-2`V(#,@,B`T(#<@-R`Q(#$@,2`Q(#$@,2`Q(#$@-R`W(#A
M`@,"`P(#`@,"`P(#`@,"`W(#<@,"`P(#`@,"`P(#`@,"`P(#<@-R`P(#`@,"P
M`P(#`@,"`P(#`@-R`W(#`@,"`P(#`@,"`P(#`@,"`W(#<@/2$@/2$@/2$@/2?
M$@/2$@/2$@/2$@/2$@-R`W(#TD(#TB(#TC(#TE(#TF(#TC(#TB(#TD(#<@-R*
M`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`R$`!T524D)%5
M3$P'G2W@82,S*2````````!$,),"F0D```````'$I9%C(RLQ4`4`!$9)3E`$;
MG2W@82/>HD(G'"PJD`$`66]U<B!M;W9E/\FB@N0"`T1)4T@N,)#D!.4M*D@NE
M,$"4-#4#(]ZB,C$<73""Y`(%:6YP=724-L*B`AD```("`@("`@("`I(L*D@NU
M,$"4-)5C(RLQ,`T`!6EN<'5T!9TMX&$C,S""Y`(#:V5Y73#2V0+!--+F`@)S)
M=!XV,NPB;2X@,$>'FQS)HA)V'OHNTMD"2"XPD.0$Y2TJ"*/"A1QM+B`P1W>VE
M&E0V@N0"`TE.4'DVTLP@*S%0^R*=+3#L(FTN(#!'QZ("#P!0Y$15)!5V'OHNB
MTMD"WJ)2+1PK,5#[(ITM,.PB;2X@,$?'H@(+`$!4Q!1V'OHNTMD"+"K0``!?;
M7U]?5#:"Y`(#24Y0>3;2S"`K,5#[(ITM,.PB;2X@,$?'H@(-`"`4-+04=A[Z?
M+M+9`BPJ<```7T@N,)#D!)4L*O.BPH4<9ZM!92-(+C"0Y`259R/-#+(2`]4O]
MLA(#U2^R$@/5+[(2`]4O@N0"`TE.4-ZB@N0"`T1)4_XULA(#E#:28R,K,;`E+
M``-$25,#G2W@82/)HI+0&C,I$````````!#@WAJ]^^$M*JWET;L?,RD0````H
M````5]"['PFM,9,"`0``````8):]^^%Y'+W[84,>\Z("S1_JR)%C(RLQT`H`>
M!$U/5D4$G2W@82,RHU(M'"PJ4`$`("`@("`@("#SHH+D`@-$25,L*M```"`@*
M("`(HX+D`@-$25/#+H+D`@-)3E`L*M```'%U:71RZ:'O(ITMD"PJ=,*Q$@.U0
M+]+9`L,N@N0"`TE.4"PJT```:&%L='+IH>\B<C12^R*=+3#L(D@N,)#D!,6B=
M`@T`,'<7!B>7'OHNTMD"PR[2,2J'^S$Q'/HN4BT<M2]")QS5+R(S*G3",9,"-
M`@``````&0%(+D``M>1TE-`:,RD@``````"0$8#D`@1#2TY'":U!92-(+D``\
MM>1TE&<CS0Q"92-(+D`PM.1TE&<CS0R"Y`($1%)70BLQ4/LB2"Y``,749%7]@
M(L,N(C,J$\.A[R)(+D`P!-5D5?LBG2W`H@(=`)#$QE9V%L8&TO9F5R8S*D@N`
M,$"4-(7D`@=%4E)"14Q,*S%0_2(K,5#](BLQ4/TB.3:R$@.\`D!`)'4E1-#9R
M`AXV,I,"`0``````$`+!--+F`@%N'C9REP(``````````0`````````!,S`R$
MDP(!``````"0"6TN$."VV1Y=,-+9`FTN$.`V["(=HS(Q'/HNTMD",RD@`````
M``"0$="['PFML1(#U2^"Y`($0D1'5(?[\:$:O?NA,AO!--+F`@%P;2XP,/;
MYF$CPR[2Y@(!<$>CTJD>^B[2V0*'^V%#'KW[X:0"%0"``````````."D`A4`1
M@`````````!@01[#+M+F`@%NA_LQDP(!`````````06OT;8;9ZOA+2I-OJ'O>
M(I6I4?TBZLBQ$@/5+S+L(FTN$`!'*RJ=ZJ'O(ITM,.PB;2X0`'<T*F'GH>\B.
MG2UPEP(!````````E``````````$9ZNQ$@.U+]+9`H?[,>PB;2X0X':X'S,I*
M$````````!!0\!IMNW&V&MZBTN0;A_O1Y@(#8V]LAJ,2=A[VZ*'O(MZB4OLB^
MR:)2_2)(+C!@E'34NQ_&U]'F`@%PQM=A0QX(HP+-'[W[P4DCG2W@82/DY)%CF
M(RLQP$DCG2W@82-6Y)%C(RLQX#\:*S%0_2(K,5#](OXU<I<"``````````@`;
M`````````&>KT>8"`6[)HG*V&E0VTN8"`6YY-M+,("LQ0&DCV/OA7R,Y-K(28
M`^\#0"!$=$1%T-D"'C9"92-(+C`@)$649R.]^V%\'3DVLA(#00`P($4D,]#9J
M`AXV,I,"`@````````'NK=&V&S,I(````````!!0\!HY-K(2`U<`8##T]"1%Q
M-&70V0(>-C*3`@$````````!!:]QN!]MNY$L*@FMT;L?H[LQDP(!````````R
M`>ZMX7D<.3:R$@-[`%!0Y31D1570V0(>-C*3`@$````````!!:]QN!]MNY$LC
M*@FML;`<O?LQNALS*1`````````0X-X:+"I0`0!A8F-D969G:+W[<;@?7,C1O
MNQ]GJY%C(RLQP`H`!E-(3U=-5@:=+>!A(X[)@>0"!55.0U94O?N!Y`(%54Y#D
M5E2]^W&V&@BC@N0"`T1)4]C[D6,C*S$0!P`%359'14X%G2W@82/SHE(M''0JY
ML!(#A_L13"-M+A``U^8"`G-Q;2X@@$?G82-M+A``A^0"!$)$1U2'^Z$R&[W[I
M\:$:G#32V0(>-M+F`@)X=&>K064C;2X@@$>79R/-#-+F`@%PO?OA>1QM+B`P`
M%W>V&E0VTN8"`G-Q>3;2S"`Y-K(2`\$TTN8"`V-O;&TN,``W5M;F`@5A9&UO7
M=AXVPDDCG2W@82-M+A``=[8:A_N!Y`($0D1'5(?[<;@?A_LQ["+Z+M+9`O.B;
M0B<<*S%0_2+#+G(T*IWJT;L?*K/1Y@(#8V]LG>HQ>![Z+M+9`L,N<K@?C^BA/
M[R*=+8"]'T6KL1(#M2_2V0+)HM*['Y['L1(#U2_2Y@(%861M;W:^H[$2`[4OE
M,K\?U2^28R,K,1!,(VTN,#"&MN9A(YPTTMD"'C9BLAP#,4(K*L,PDL(?9ZMQ=
MN!]M+C`PAK;F.QKM,#(O*J'$D6LC\_O!)",Y-K(2`\$TTN8"`VUM=AXV0J<"B
MG2W@82.<--+9`AXV$DPC;2XP0/<VYV$CPR[2Y@(#=&]S,RD0````````$%#PC
M&FV[<;@?WJ(2=AZ]^Q$W*F'GD8`>^B[2V0+>HM(Q*J`QTN8"`6UM+C!`]S9W[
MN!](+D`@1'1$U>8"`6UM+C`P]L;FWAHS*1`````````0<+8:O?OA>1QM+E`0.
M1M;V9N<[&DPR0BLJ*S%0^R*=+=#F`@-T;W/)HK(2`]4OXE\C.3:R$@/!--+FJ
M`@=P<F]M;W1E'C;"22.=+>!A(X?[,>PBA_N!Y`(%15!33E1AYZ'O(ITM4+0::
ME:G1Y@(%861M;W:^HX&]'RLQ4/LBG2TP[")(+D`@1'1$=;@?A_MQ-"J=ZM&[D
M'RJST>8"`V-O;&>K\8@>@^>A[R*=+="['\,NTN8"!W!R;VUO=&6^HZ'O(ITM$
MD"PJ#OSA>1QM+E`01M;V9N<[&BLQ4/LBV/M1_2(K,5#[(O/[4?TB*S%0_2(Y,
M-K(2`\$TTN8"!F-A<&-H:QXV,I,"`0````````%M+C`P]L;FWAIM+A``=[8:`
MA_MQN!_#+H+D`@1"1$=4^BZ"O1^U+]+9`L,NTN8"!W!R;VUO=&6^HZ'O(ITMT
M4+0:;2Y0$$;6]F;G.QHK,5#[(MC[4?TBPR[2Y@(!<#,I$````````!!0\!IMX
MNW&X'_.B$G8>O?O!-2IAYY&`'OHNTMD",RD0````````(-#F`@-C;VSNK='FY
M`@%P9ZMQN!_#+H+D`@1"1$=4^BZ"O1^U+]+9`MZB@N0"!4504TY4GL?1Y@(%\
M861M;W:^H[$2`]4OLA(#U2^R$@/5+Y(L*J+[<;8:;2Y@,!8&-X:VYCL:":W1:
MY@(&8V%P8VAKOJ/A7R/^-9)C(RLQT-D"'C;"H@(_`(`#TH(#$B,#TA(C`Q*3H
M`](2DP,B$P/2(A,#$@."8[(<`S'2Y@(#8VAKOJ/!)",Y-K(2`YTMX&$C+"HP!
M`@`Y("TY(#$Q("TQ,2`Q(#1M+C#0UF;G.QHY-K(2`YTMX&$C+"HP`@`Q("TQ%
M(#$P("TQ,"`Q(#1M+C#0UF;G.QHY-K(2`YTMX&$C+"JP`P`Q("TQ(#D@+3D@"
M,3`@+3$P(#$Q("TQ,2`Q(#AM+C#0UF;G.QHY-K(2`YTMX&$C+"JP`P`Q("TQ8
M(#D@+3D@,3`@+3$P(#$Q("TQ,2`Q(#@FRS$0(VTN,#"&MN8[&DPR,NPB;2X08
M`#>3`@$``````%`"8>?1Y@(!<#,I$````````)40=AX)Z*'O(ITM,.PB;2X0,
M`)<L*F>K@>0"!$)$1U2/Z-'F`@%PWJ)RMAI(+D`@1'1$]8@>@^?1Y@(!</.B$
M<K8:2"Y`($1T1/6A&@BC$G8>@^>A[R*=+=#F`@%PWJ)RMAIM+A``-R\J9ZO1$
MY@(!<,FB<K8:GL?1Y@(%861M;W:^H[$2`]4O,NPB;2X0`)<L*@FM@>0"!$)$J
M1U2/Z-'F`@%PWJ*2T!I(+D`@1'1$]8@>@^?1Y@(!</.BDM`:2"Y`($1T1/6(9
M'H/GT>8"`7`(HY+0&D@N0"!$=$3UH1H(HQ)V'H/GH>\BG2W0Y@(!<-ZBDM`:W
M;2X0`(<P*@FMT>8"`7#)HI+0&I['T>8"!6%D;6]VOJ.Q$@/5+[(2`]4ODF,C;
M*S&P$@-M+C``-U9F?!V^H^%?(_XUXE\C;2X@@$?7Y@("<W'^-9)C(RLQD,P`]
M!4%,3$U6!9TMX&$C="JP$@.'^Q%,(VTN,##VQM;F`@)S<6TN((!'YV$C,RD0-
M````````(3"3`@$``````(`)H#'2Y@(!;L,NTN8"`6Y(+D`@1'1$=;@?*K/10
MY@(#8V]L8>?1NQ]'H]*I'H/GH>\BG2W0Y@(!;D@N4-!D=53DU.8"`G-Q9ZM!(
M92-M+B`P%Y=G(\T,TN8"`GAT9ZM!92-M+B"`1Y=G(\T,LA(#U2_")"-M+B"`2
M1]?F`@)S<?XUDF,C*S%0&``$4$Q-5@2=+>!A(PBC4BT<2"XPD.0$A>0"!D-6>
M4E1344@N,)#D!#4O*@BCPH4<2"Y@,&0E1345%4PC;2XP8"8WU^8"`W1O<QXV:
M,NPB"*,"-AQM+C!@)C>'Y`($0D1'5(?[02LJ7>S1NQ]'H]*I'H/G,7@>^B[23
MV0)M+C!@)C>'Y`(%359'14YM+C!@)C?7Y@(#=&]SGL=!JQR'^S'L(K2B$G8><
M^BZ"O1^U+]+9`L;7T>8"`V9R<VTN,$#W-N=Y'*+[@>0"!$U+359(+F!`E#0%5
MU60E,RITPK$2`]4OLA(#U2_B7R,Y-K(2`](!8#!D)44U%670V0(>-G*X'\FBS
M<K@?7,C!H@(5`!`F-D969G:&UKL?M,K1NQ_>HG*X'US(P:("%0`0(S-#4V-SC
M@].['[3*$4PC;2X0@-?F`@%Y'C8R[")M+A"`]X@>;2X0D/>('@GHH>\BG2V`S
M,"ITPK$2`[4OTMD";2X0@#>3`@$````````!A_O1Y@(!>>ZM<;8:9ZNQ$@/5>
M+^)?(SDVLA(#0P%`T+349$70V0(>-A),(VTN((!'U^8"`G-Q'C;2Y@("<W&.W
MR='F`@)X=([)$4PC;2XP8"8WU^8"`W1O<VTN$$#7Y@(!>AXV,NPB;2XP8"8WH
MA^0"!%!+3D=AYZ'O(ITMT.8"`W1O<U0V@N0"!%!+3D=Y-M+,("LQ4/LBG2TP,
M[")M+C!@)C>'Y`($0TM.1V'GH>\BG2W0Y@(#=&]S5#:"Y`($0TM.1WDVTLP@%
M*S%0_2(K,5#](E0V@N0"`T)21'DV<K@?;2XP8"8WA^0"!$)$1U2'^W&X'RJS<
MT;L?'ZH13"-M+C`P]L;6Y@($<'1Y<!XVTN8"`W1O<[W[<4`=;2XP8"8W1RLJ+
MA_M!92-(+E!0!#7E1)5G(\T,<D`=PR[2Y@(">'1%J]&I'OHNTMD"PR[2Y@(!L
M=,FB$G8>^B[2V0)M+A"@A^0"!$=434Q(+E#01%4%1;02`[4OTMD"PR[2Y@(!)
M=-ZB$G8>^B[2V0)M+C!@)C<WDP(!`````````6TN,##VQN;>&F>K064C2"Y0[
M4`0UY4259R/-#+(2`[4OTMD"PR[2Y@(!=(_HH>\BG2U`92-(+C`@)$649R-M7
M+C!`]S8WDP(!`````````6TN,##VQN;>&@FM02LJ!]31Y@(#8V]LE:F!Y`($X
M1U1-3$@N4-!$505%M!(#M2_2V0+#+M+F`@%T,RD0````````(-#%'OHNTMD"[
M5#:"Y`(#0E)$>39RN!]M+A"@U^8"`71(+D`@1'1$=4`=;2X00$<K*@?4L1(#0
MM2_2V0)M+A"@A^0"!$=434Q(+E#01%4%141E(T@N,"`D191G(VTN,$#W-M?F(
M`@%T,RD0````````$)#0&H?[@>0"!$=434QM+C`P]L:&Y`($1U1-3+W[D=`:<
M2"Y0T$15!45T0!TK,5#](BLQ4/TB*S%0_2(K,5#](BLQ4/TB_C7B7R/^-9)C`
M(RLQ`%D`!4U455!$!9TMX&$CA_M!92-(+D#01"7$E&<C2P2"Y`(%4T-54$0YJ
M-K(2`U8`4#`U5`5%5-#9`AXV0F4C2"Y0,#7T)%649R-+!))C(RLQ(`0`!$=4_
M34P$G2W@82.'^Z$R&[W[\:$:P332Y@(#8V]L;2XP`#=6YF$CZ"E`!P`S*1``5
M``8``````````!````````!0,@`````````U`````````%``````````D"``-
M```````2T.8"`W!C9=\S8GP='S?2V0+S^T$K*BLQ4/LBG2W0Y@(#8V]L[JVQQ
M$@/5+^)?(SDVLA(#+`%@4.74M-1D9=#9`AXV$DPC;2X@@$?7Y@("<W$>-M+F-
M`@)S<8[)T>8"`GATCLD13"-M+C!@)C?7Y@(#=&]S;2X00-?F`@%Z'C9"92-(H
M+C`@)$649R.'^]'F`@-T;W-(+D`@1'1$=;@?*K,13"-M+C`P]L;F82-M+C!@@
M)C?7NQ\'U-'F`@-T;W.THG)`'<,NTN8"`W1O<T@N0`"UY'04=A[Z+M+9`FTN_
M,&`F-T=E(T@N0`"UY'249R/-#+(2`[4OTMD"PR[2Y@(#=&]S2"Y`,+3D=!1V.
M'OHNTMD";2XP8"8W1V4C2"Y`,+3D=)1G(\T,LA(#U2^R$@/5+S+L(FTN((!'+
M5[0:G>JA[R*=+3#L(FTN$$"7+"IAYZ'O(ITMT.8"`7I(+D!P1-7$5)D:2"Y0%
MT$15!45$92-(+C`@)$649R-M+C!`]S;7Y@(!>@?4L1(#M2_2V0+#+M+F`@%T0
MWJ(2=A[Z+M+9`FTN$*!'92-(+E!0!#7E1)5G(\T,LA(#M2_2V0+#+M+F`@%T]
MC^BA[R*=+4!E(T@N,"`D191G(VTN,$#W-C>3`@$````````!;2XP,/;&YMX:C
M":W1Y@(#8V]LE:EQ0!UM+C`P]L:&Y`($1U1-3$@N4-!$505%M!(#M2_2V0+#M
M+M+F`@%T,RD0````````(-#%'OHNTMD"5#:"Y`(#0E)$>39RN!]M+A!`U^8"@
M`7I(+D`@1'1$=4`=;2X0H$<K*@?4L1(#M2_2V0)4-H+D`@-"4D1Y-G*X'VTN8
M,&`F-]?F`@-C;VP'U-'F`@-T;W-M+A!`-Y,"`0````````$)K7&X'T@N0'!$[
MU<34Y@(!>D@N0'!$U<24T!IM+C`P]L:&Y`($1U1-3`FM@>0"!4U455!$!]2QD
M$@/5+[(2`]4OLA(#U2^R$@/5+[(2`]4OXE\C_C7B7R,Y-K(2`W,%0#`$U61%@
MT-D"'C;RK1J&HS+L(AVC,C$<^B[2V0*5J=&['Y6IT;L?*S%0_2)(+F`P510DE
M-82$O1\L*C`!`$UY(&UO=F7SHH+D`@-$25.B^X'D`@932$]735:B^X'D`@1-@
M2TU62"Y@0)0T!=5DA>0"!T524D)%3$PY-K(2`_<`4'!41-5D5=#9`AXV$DPC7
M;2X0X.9A(VTN$.!F?!V]^]'F`@%NQM?1NQ_^-9)C(RLQ``8`!U-#3U)%358'!
MG2W@82/#+H+D`@-03%E(+D!`!$6%))<>^B[2V0+S^X'D`@530T]212LQ4/LB0
MG2U0F1I(+F`P510D-83DP!\._#&_'RLQ4/TB.3:R$@.L`&`P510D-81DT-D"'
M'C:B^B#8^Y$L*E0V@N0"`U!,67DVLD0@P332Y@(";#%M+C`P]L;F82/?JM'FH
M`@-C;VSNK4&G`D6K4;0:*S$03"-M+B#`)M/F`@1B97-T'C;2Y@(#8V]L2"Y05
M$,3$U&2%Y`(&4T]25$U6A_N!FQS#+M+F`@-C;VRTHM+%'OHNTMD"G#32V0(>-
M-K+9'CDVLA(#G#32V0(>-N*['CDVLA(#*S%0^R*=+<!)(YTMX&$C_.R18R,KN
M,<!)(YTMX&$C7>R18R,K,;`2`]4O$DPC;2X@@$?7Y@("<W%M+A#@UN8"`F,Q7
M;2X@,";C82/#,-+F`@)X=&TN$.!F?!UM+B`P%]?F`@%NQM<ANA](+D#0M-1D6
MU>8"`6Y(+F!`5B96=S9WN!^.R=&[']C[<;@?2"Y0T&1U5.2$O1^XR3&3`@(`\
M```````"!:_1NQ](+F`P]/0D131UN!]W*0````````!%`````````$60T!H?[
MJC&3`@$````````![JV!)QM(+C`@1233NQ]M+C`P]L9&*RI=[('D`@1#2TY'5
M2"Y``+7D=.0_&D@N8##T]"1%-)70&A^J,9,"`0````````'NK9$L*F>K@2<;R
M2"XP($4D<[8:9ZO1Y@(#8V]L[JUQN!^5J8'D`@530U501`[\X<`?,RD0`````
M````$M#F`@-C;VSNK='F`@-C;VQ(+G`P-?0D5=1D->PBR:*B[R*=+7"X'PO+8
MP:(""0```G*V&C*C@N0"`T1)4RLQ4/TBPRYRN!]M+B#`%M/F`@)C,;ZCH>\B,
MG2W`-2K5PC'L(H?[T>8"`FPR;2X@,";C.QKZ+M+9`E0VTN8"`FPR>3;2S""BK
M^S'L(D@N,`#%E)4L*F'GH>\BG2T@NA](+F`PA?1TU62U$@/5+^(M*H/'064CG
M;2Y`(%8V1Y=G(\T,LA(#M2^"O1_5+[(2`[4OTMD"5#;2Y@(";#)Y-M+,(%RC]
M0B<<*S%0_2)M+A#@EBPJ":UQN!]4-M+F`@%N>3;2S"##+O*('OHNTMD"7*-"$
M)QPK,5#](D@N8%#EU+349(7D`@530U501.TPPC4J$\.1:R/^-=+F`@1B97-T:
M6LF!O1]M+B#`)N-?(_XU0F4C2"XP`,64E6<CR:*"4R`Y-K(2`[,&8##U)$75S
M9&70V0(>-A),(VTN((!'U^8"`G-Q'C9"IP(K,9`L*C,I$````````"(P$".'I
M^\$D(S,I$````````"$P>!R'^Q%,(VTN,("'1M?F`@-S:'0>-I(L*FTN((!']
MAYL<H#'2Y@(!;FTN,("'1M?F`@)X=&TN$.!F?!V'^^&8'-C[,>PBA_LQDP(!Y
M``````"``5WLH>\BG2V`O1\S*1`````````8L!(#U2^2+"IGJW&X'VTN,("'#
M1M>['\;7X<`?9ZN1PA]M+C`PAT;7NQ^B^V%\'6TN(#`7U^8"`6[&UW&V&@?41
M064C;2XP,(=&EV<CS0QR0!U4-M+F`@-X:'1Y-M+,($PR0F4C;2X@@$>79R/-:
M#$)E(VTN(#`7EV<CS0S"H@)'`&`#$F,#D@,2,P."`Q)#`W(#$E,#(@,B`P,RP
M`Q(#$@,2(V.R'`,QTN8"`GAT;2XP@(=&-R\JFOQA?!UGJT%E(VTN((!'EV<CE
MS0S2Y@("<W%M+C`PAT;GP!_&UW&V&E0VTN8"`G-Q>3;2S"!,,M+F`@)X=&TN]
M(#`7YU\C_C628R,K,0`U``9D96)U9W,&G2W@82/!--+F`@%N'C9RN!^.R8'D7
M`@553D-65+W[@>0"!55.0U94O?MQMAI(+C``Q92UL!PL*G```"!GJ]'F`@%ND
M"\MQMAHL*G```"!GJ]&['V>KP:("!P``<K8:':."Y`(#1$E3_C628R,K,;`.J
M``-&24<#="I`IP(>*_`!``@`@``````\)"0D/``>*_`!``@`@````#QF0G)&G
M?``>*_`!``@`@````!PT)&9"?@`>*_`!``@`@````'Y:0D)"?@`>*_`!``@`X
M@````'Y:9D)"?@`>*_`!``@`@````#QF0F9"?@`K,4"G`AXK\`$`"`"`````3
M```8&!@``!XK\`$`"`"``````!@\##@``!XK\`$`"`"```````@8P``!XKA
M\`$`"`"``````"0\/#P``!XK\`$`"`"``````"08/#P``!XK\`$`"`"`````)
M`!@\P``"LQL!(#V`%@0)0T!=5D9=#9`AXVXI@<P332Y@(#9G)S;2XP0/<VW
MYV$C-N31Y@(#9G)S2"Y@,/3T)$4TY9@<O?OA>1Q<H^+>&G<I`````````'``'
M````````<)#0&DXJ4`$`"`````````!.*E`!``@`````````%N0Q[")M+C!@P
M)C=WN!\S*1`````````04/`:;;MQMAK>HM+D&_HN4ID:U2^BCAQM+C!`]S:'W
MY`($0D1'5(?[\:$:O?NA,AO!--+F`@%P;2XP,/;&YF$C-N31Y@(#=&]S2"Y@B
M,/3T)$4TY9@<O?OA>1Q<H^+>&G<I`````````'``````````<)#0&J+[X:0"S
M%0"``````````."D`A4`@`````````!@01[#+M+F`@-T;W.'^S&3`@$`````\
M```!!:_1MAMGJ^$M*DV^H>\BE:E1_2+JR#'L(FTN,$#W-G>X'S,I$```````O
M`!!0\!IMNW&V&MZBTN0;A_O1Y@(#8V]LAJ,2=A[VZ*'O(MZB4OLBR:)2_2)(2
M+C!@E'34NQ_&U]'F`@%PQM?1NQ^<--+9`AXV0DX>.3:R$@.<--+9`AXV8D4>.
M.3:R$@/^H^%?(_XU@KT?.3:R$@./`T``QQ:61]#9`AXVDF$<5#:"Y`($1DQ'J
M4WDVTLP@2"Y0,$4E)$6T]QQ4-H+D`@-"4D1Y-M+,("PJ,`<`,B=$4%1()S`G>
M4$Q9)S`G351"3"<P)T504TY4)S`G4T-/4D4G,C4G4$M.1R<Y-2=#2TY')S$@@
M-WO/,1`CS0S")"-T*N"D`A4`0#\0$&0P``3@I`(5````````````L!(#?\;A]
MI`(5`#`(````````X*0"%0``!````````&!!'C;DT<P@="K@I`(5````````A
M````X*0"%0```````````+`2`_#B@>0"!$125T+#,,*B`@T`\/7U]45E(T@N$
M,)#D!)5G(\T,XBTJ=,*!Y`($1DE.4$@N0-#T9%6D^B#8^]$.(\FB,C$<N3:"(
MY`($1DQ'4W_&P:(":0"P9\1T-`5"!$6%!`+%E`4B)$4$DN0$!=)$)<0$,C7T1
>)%4$`K7D=`0RM.1T!%($->5$U;?W'/X.DF,C*S$`E
``
end
END_UU
BEGIN_ASC chess.asc
%%HP: T(3)A(D)F(.);
"69A20FF73A4400000040050514254047A2077920100000000000066900000000
00000069779201000000000000460100000000000075084E208036F6E6374716
E6479C2A27792000000000000000000000000000000000166E184E201095B213
0FA00030B6569730D9D20E163247A2047A20C2A207000016C2A207000026C2A2
07000036C2A207000046C2A207000056C2A207000066B213047A20C2A2070000
76C2A207000086C2A207000096C2A2070000A6C2A2070000B6C2A2070000C6B2
13047A20C2A2070000D6C2A2070000E6C2A2070000F6C2A207000007C2A20700
0017C2A207000027B213047A20C2A207000037C2A207000047C2A207000057C2
A207000067C2A207000077C2A207000087B213047A20C2A20F000054E4455425
C2A207000097C2A2070000A7C2A20B00004454C4C2A20D0000241434B4B21304
7A20C2A2050000C2A207000073C2A207000083C2A207000093C2A2050000B213
047A20C2A2050000C2A207000043C2A207000053C2A207000063C2A2050000B2
13047A20C2A2050000C2A207000013C2A207000023C2A207000033C2A2070000
D2B213047A20C2A2050000C2A207000003C2A2070000E2C2A207000002C2A207
0000B2B2130B2130378A1C9432D9D20E163233920100000000000001050FA178
BF1D6BB1DBBF13ABB1339201000000000000010EEDA13F2A20DCF16C7D1DBBF1
6C7D13CE2278BF18B9C1AFE229C2A25BF22D9D208DBF14B2A2B21305DF229363
2B2130C9432D9D20E16328DBF14B2A293632B2130EF3A193632B21302B300503
54524254450C2A20DF100B573027302730273027302730273027302730273027
3027302730273027302730273027302730273024302230233025302630233022
3024302730273021302130213021302130213021302130273027302030203020
3020302030203020302030273027302030203020302030203020302030203027
3027302030203020302030203020302030203027302730203020302030203020
30203020302030273027302D21302D21302D21302D21302D21302D21302D2130
2D2130273027302D24302D22302D23302D25302D26302D23302D22302D243027
3027302730273027302730273027302730273027302730273027302730273027
302730273027301200705425252454C4C470D9D20E1632339202000000000000
4403392099900000000000104C5A193632B213055000406494E40540D9D20E16
32ED2A2472C1C2A209100095F6572702D6F66756F39C2A284E203044943584E2
03094E405ED2A284E203044943533032ED2A2313C1D503284E205096E6075747
49632C2A2091000020202020202020202029C2A284E203044943593632B21303
D0005096E607574750D9D20E16323303284E2030B65697D5032D9D201C432D6E
20203747E16323CE22D6E202037478B9C19C2A2167E1AFE22D9D2084E203094E
405ED2A2803A2C58C1D6E2020374776BA14563284E203094E40597632DCC02B2
1305BF22D9D203CE22D6E20203747C2A20F000054E4455425167E1AFE22D9D20
ED2A25D2C1B21305BF22D9D203CE22D6E20203747C2A20B00004454C4167E1AF
E22D9D20C2A20D0000F5F5F5F54563284E203094E40597632DCC02B21305BF22
D9D203CE22D6E20203747C2A20D0000241434B4167E1AFE22D9D20C2A2070000
F584E203094E4059C2A23F2A2C58C176BA14563284E203094E40597632DCC02B
21305DF22B21305DF22B21305DF22B21305DF2284E203094E405ED2A284E2030
449435EF532B21304963293632B2130B52003044943530D9D20E16329C2A290D
A1339201000000000000010EEDA1DBBF1ED2A2DA5E1DBBF13392010000000000
00750DBBF190DA1339201000000000000669DBBF1E97C1DBBF1634E13F2A20DC
F1AE8C193632B2130DA00040D4F4655440D9D20E1632233A25D2C1C2A2051000
02020202020202023F2A284E2030449435C2A20D000002020202803A284E2030
4494353CE2284E203094E405C2A20D000017579647279E1AFE22D9D209C2A247
2C1B21305BF22D9D203CE2284E203094E405C2A20D00008616C647279E1AFE22
274325BF22D9D203CE2284E203094E405C2A20D000037771607279E1AFE22D9D
203CE22D13A278BF1313C1AFE225D2C15BF22472C15DF22233A2472C13392020
0000000000911084E204005B4E47490DA133920200000000000911084E204034
B4E47490DA14563284E204005B4E47497632DCC024563284E204034B4E474976
32DCC0284E204044257524B21305BF2284E204005C4D4655DF223CE22233A231
3C1AFE2284E20403405D4655BF22D9D20C2A20D100094C6C6567616C602D6F66
756233A284E203044943584E20705425252454C4C4B21305DF22B21305DF22B2
1305DF2293632B2130CB200404425752440D9D20E16323392010000000000001
201C432D6E2010E6E16327792000000000000000100000000000000010330323
39201000000000000990D6E2010E6B9DE1D5032D9D20D6E2010E63CE22D13A23
13C1AFE22D9D20339202000000000009110DBBF190DA1B21305DF2284E204024
44744578BF1F1AA1DBBF1A23B11C432D6E201007D6E203036F6C6E16323CE22D
6E201007743A2D9AE1AFE22D9D2078BF1634E1DBBF1E4A205100080000000000
00000E4A20510008000000000000000614E13CE22D6E2010E678BF1339201000
00000000001050FA1D6BB176BA1ED2A2D4EB1AFE22599A15DF22AE8C1B21305D
F223CE22D6E2010074B2A2D9AE1AFE22D9D203CE22D6E201007743A2167E1AFE
22D9D20779201000000000000049000000000000004076BA1B21305BF22D9D20
78BF13CE22D6E2010E678BF133920100000000000001050FA1D6BB176BA1ED2A
2D4EB178BF1D6E203036F6C6683A2167E16F8E1AFE22ED2A25BF229C2A25DF22
84E2030649474DBBF16C7D1D6E2010076C7D1634E1803A20DCF1DBBF1C9432D9
D20E16324E4E193632B2130C9432D9D20E1632654E193632B2130EF3A1B21305
DF22B21305DF22EF532779200000000000000080000000000000000076BA1D6E
2010E69C2A276BA145632D6E2010E697632DCC02B2130496328DBF1EF5329363
2B2130FE300402444744540D9D20E16324563284E203024254497632DBBF16C7
D193632B2130140003025442330D9D20E1632339202000000000000010EEDA1D
6BB133920200000000000001050FA193632B2130750006034F4F425443560D9D
20E163233920100000000000001050FA178BF1D6BB19C2A290DA1DBBF13ABB13
39201000000000000010EEDA1E97C193632B2130B70005055E434654550D9D20
E163233920100000000000001050FA178BF1D6BB19C2A290DA1B0BC1DBBF13AB
B1339201000000000000010EEDA1C2A20510001626364656667686DBBF178BF1
C58C1DBBF176BA193632B2130CA000603584F475D46560D9D20E1632E89C184E
205055E4346545DBBF184E205055E4346545DBBF176BA1803A284E2030449435
8DBF193632B21301700050D4657454E450D9D20E16323F2A25D2C147A20B2130
78BF11C432D6E201007D6E20203717D6E20208747E1632D6E20100784E204024
44744578BF1A23B1DBBF1F1AA1C9432D9D20E1632D6E2020874776BA145632D6
E2020874797632DCC02D6E201007DBBF1E97C1D6E2020371776BA145632D6E20
20371797632DCC0293632B21301C432D6E203036F6C6D6E2030073656D6E2050
1646D6F667E1632C9432D9D20E1632D6E20100776BA178BF184E204024447445
78BF178BF178BF13CE22AFE22D9D203F2A2472C1B21305DF223CE22743A2D9AE
1DBBF1A23B1D6E203036F6C6D9AE1387E1AFE22D9D203CE2278BF1F88E1AFE22
D9D208DBF154BA1B21305BF22D9D209C2A2DBBF1E97C1B21305DF22D6E205016
46D6F667EB3A1B21305BF223FBF15DF2293632B21301C432D6E20303686B6E16
32C9432D9D20E163262BC1301324B2A23C03292CF176BA178BF1D6E20303686B
6EB3A1DE0323F2A21A4C19B6323FBF1C423293632B21301C432D6E2030D6D667
E163247A20D9D20E1632C9432D9D20E16321C432D6E203047F637E16323CE22D
6E203047F63733920100000000000001050FA1D6BB178BF1ED2A2167E1DBBF11
73A2167E1908E1AFE22D9D20ED2A2D13A20A132D6E2010D6D6E203047F63778B
F184E204024447445D6E2010D6D6E203036F6C6EEDA133920100000000000001
076BA1DBBF1E97C1D6E20501646D6F667EB3A1C42324B2A2B21305BF22D9D20D
6E203047F6379C2A2B21305DF22EF53293632B21301C432D6E20700727F6D6F6
4756E1632C9432D9D20E163278BF13CE2278BF184E2050540535E445167E1AFE
22D9D2054BA1599A1D6E20501646D6F667EB3A18DBF1B21305BF22D9D203CE22
84E20402444744578BF178BF1743A2D9AE1DBBF1A23B1D6E203036F6C676BA1F
88E1387E1AFE22D9D20DBBF13CE22D6E20700727F6D6F64756EB3A1AFE22D9D2
09C2A2E0CF1E97C1D6E20501646D6F667EB3A1B21305BF228DBF15DF22B21305
BF223FBF15DF22B21305DF2293632B21301C432D6E20603616073686B6E16323
39201000000000000010D6E203036F6C6EEDA1D6E20100776BA178BF178BF13C
E2284E204024447445AFE228DBF15BF22D9D203CE22D6E20700727F6D6F64756
EB3A1AFE22D9D2054BA1D6E20501646D6F667EB3A1B21305BF228DBF15DF223C
E22D6E20100733920100000000000001050FA1D6BB178BF13F2A2167E1DBBF1C
53A2167E1908E1AFE22D9D20339201000000000000020D6E203036F6C6EEDA1D
6E20100776BA178BF13CE2284E204024447445AFE228DBF15BF22D9D20ED2A28
4E2050540535E445E97C1D6E20501646D6F667EB3A1B21305DF22B21305DF22B
21305DF229C2A22ABF176BA1D6E20603616073686B6EB3A190DA1D6E20603616
073686B6EB3A1EF532EF53293632B2130D9D20E1632C2A20F30008302D283021
32302D2132302139302D2139302231302D223130213028362BC130132D6E2030
3686B6EB3A1C423293632B2130D9D20E1632C2A20320009302D29302131302D2
131302130243D6E2030D6D667EB3A193632B2130D9D20E1632C2A20320001302
D21302130302D2130302130243D6E2030D6D667EB3A193632B2130D9D20E1632
C2A20B30001302D213029302D29302130302D2130302131302D2131302130283
D6E2030D6D667EB3A193632B2130D9D20E1632C2A20B30001302D213029302D2
9302130302D2130302131302D213130213028362BC130132D6E20303686B6EB3
A1C42323CE22D6E201007339201000000000000520167E1D6E20100733920100
0000000000590167E1908E1AFE22D9D203CE22D6E2010079C2A276BA184E2040
24447445F88E1D6E201007ED2A276BA184E204024447445F88E1387E1D6E2010
073F2A276BA184E204024447445F1AA1803A2167E1387E1AFE22D9D20D6E2010
07ED2A276BA1D6E2010073F2A276BA1D6E2010079C2A276BA1E97C1D6E205016
46D6F667EB3A1B21305DF223CE22D6E2010079C2A290DA184E204024447445F8
8E1D6E201007ED2A290DA184E204024447445F88E1387E1D6E2010073F2A290D
A184E204024447445F88E1387E1D6E201007803A290DA184E204024447445F1A
A1803A2167E1387E1AFE22D9D20D6E201007ED2A290DA1D6E201007803A290DA
1D6E2010079C2A290DA1E97C1D6E20501646D6F667EB3A1B21305DF22B21305D
F2293632B2130B2130D6E20300736566C7D1EB3A1EF532EF532EF532D6E20208
747D6E20203717EF53293632B21309CC005014C4C4D46550D9D20E163247A20B
213078BF11C432D6E203036F6C6D6E20203717D6E20208747E16323392010000
000000001203392010000000000008900A132D6E2010E63CE22D6E2010E684E2
0402444744578BF1A23B1D6E203036F6C6167E1DBBF1743A2D9AE1387E1AFE22
D9D20D6E2010E684E2050D4657454E4D6E2020371776BA145632D6E202037179
7632DCC02D6E2020874776BA145632D6E2020874797632DCC02B21305DF22C42
32D6E20208747D6E20203717EF53293632B2130581004005C4D46540D9D20E16
32803A25D2C184E203094E40584E206034652545351584E203094E4053F2A280
3A2C58C184E20603465254535151C432D6E2030662737D6E203047F637E16323
CE22803A2063C1D6E203066273784E20402444744578BF14B2A2D5CE1DBBF174
3A2D9AE1387E1387E1AFE22D9D20D6E203066273784E2050D4657454E4D6E203
0662737D6E203047F637E97C14BAC178BF13CE224B2A2167E1AFE228DBF15BF2
2D9D206C7D1D6E2030662737D6E203047F637E97C12ABF184E2040D4B4D46584
E206044943505D465233A2472C1B21305DF22B21305DF22EF53293632B21302D
1006034652545351560D9D20E163278BF19C2A278BF1C58C1C2A205100016263
64656667686DBBF14BAC1DBBF1ED2A278BF1C58C1C2A20510001323334353637
383DBBF14BAC11C432D6E201087D6E201097E16323CE22D6E201087F88E1D6E2
01097F88E1908E1AFE22D9D20803A2472C1B21305BF22D9D20D6E20108733920
100000000000001078BF1D6E201097EEDA176BA176BA1B21305DF22EF5329363
2B21303410040D4B4D46540D9D20E16321C432D6E20208747D6E20203717E163
2D6E20203717E89C1D6E20208747E89C11C432D6E2030662737D6E203047F637
D6E201047D6E2010A7E16323CE22D6E203066273784E204005B4E474167E1AFE
22D9D20D6E203047F6374563284E204005B4E47497632DCC02B21305BF22D9D2
03CE22D6E203066273784E204034B4E474167E1AFE22D9D20D6E203047F63745
63284E204034B4E47497632DCC02B21305DF22B21305DF224563284E20302425
449763278BF1D6E203066273784E20402444744578BF178BF1A23B1DBBF1F1AA
11C432D6E203036F6C6D6E204007479707E1632D6E203047F637DBBF1704D1D6
E20306627374B2A278BF14563284E2050540535E44597632DCC02704D13CE22D
6E2020874754BA1D9AE1AFE22D9D203CE22D6E2010479C2A2167E1AFE22D9D20
D6E2010A784E20407445D4C484E2050D445550544B21305BF22D9D203CE22D6E
201047ED2A2167E1AFE22D9D20D6E2030662737339201000000000000010D6E2
03036F6C6EEDA176BA14563284E2050540535E44597632DCC02B21305BF22D9D
203CE22D6E201047F88E1AFE22D9D204563284E203024254497632D6E203047F
637339201000000000000010D6E203036F6C6EEDA190DA14B2A2704D1D6E2030
36F6C6599A184E20407445D4C484E2050D445550544B21305BF22D9D203CE22D
6E201047339201000000000000020D5CE1AFE22D9D204563284E203024254497
63278BF1D6E2010A7D6E20104784E204024447445704D1D6E2010474B2A2704D
1B21305BF22D9D20D6E2010A784E20407445D4C484E2050D4455505444563284
E203024254497632D6E203047F637D6E20104733920100000000000001090DA1
78BF184E20407445D4C4D6E203036F6C684E20407445D4C4DBBF190DA184E205
0D445550544704D1B21305DF22B21305DF22B21305DF22B21305DF22B21305DF
22EF532EF532EF53293632B21300950050D44555054450D9D20E163278BF1456
3284E2040D44524C497632B440284E2050353455054493632B21306500050353
455054450D9D20E16324563284E20503534F4255497632B440293632B2130240
00407445D4C440D9D20E163278BF1A23B1DBBF1F1AA11C432D6E203036F6C6D6
E2030073656E16328E9204700033920100006000000000000000000100000000
0000052300000000000000530000000000000005000000000000000902000000
000000210D6E2030073656FD3326C7D1F1732D9D203FBF14B2A2B21305BF22D9
D20D6E203036F6C6EEDA1B21305DF22EF53293632B2130C21006055E4D4B4D46
560D9D20E16321C432D6E20208747D6E20203717E1632D6E20203717E89C1D6E
20208747E89C11C432D6E2030662737D6E203047F637D6E201047D6E2010A7E1
6324563284E20302425449763278BF1D6E203047F63784E20402444744578BF1
A23B11C432D6E203036F6C6E1632D6E2030662737DBBF1704D1D6E203047F637
4B2A2704D13CE22D6E203047F63784E204005B4E474167E1AFE22D9D20D6E203
06627374563284E204005B4E47497632DCC02B21305BF22D9D203CE22D6E2030
47F63784E204034B4E474167E1AFE22D9D20D6E20306627374563284E204034B
4E47497632DCC02B21305DF22B21305DF223CE22D6E2020874754BA1D9AE1AFE
22D9D203CE22D6E2010479C2A2167E1AFE22D9D20D6E2010A784E20407445D4C
4599A184E2050D4455505444563284E203024254497632D6E203047F637D6E20
10A7704D1B21305BF22D9D203CE22D6E201047ED2A2167E1AFE22D9D20D6E201
0A74563284E2050540535E44597632DCC02B21305BF22D9D203CE22D6E201047
F88E1AFE22D9D204563284E203024254497632D6E203047F6373392010000000
00000010D6E203036F6C6EEDA190DA1D6E203036F6C6599A1704D1D6E203036F
6C684E20407445D4C484E2050D445550544B21305BF22D9D203CE22D6E201047
339201000000000000020D5CE1AFE22D9D204563284E20302425449763278BF1
D6E201047D6E2010A784E204024447445704D1D6E2010A74B2A2704D1B21305B
F22D9D204563284E20302425449763278BF1D6E2030662737D6E203036F6C670
4D1D6E203047F637D6E20104733920100000000000001090DA178BF184E20407
445D4C4D6E2010A784E20407445D4C490DA1D6E203036F6C684E20407445D4C4
90DA184E2050D445550544704D1B21305DF22B21305DF22B21305DF22B21305D
F22B21305DF22EF532EF532EF53293632B213037500403405D46540D9D20E163
2FDAA1683A23CE22D13A2313C1AFE22D9D20599A1DBBF1599A1DBBF1B21305DF
2284E20603554142534848DBF1C2A2031000D49702D6F667563F2A284E203044
94352ABF184E20603584F475D4652ABF184E2040D4B4D46584E206044943505D
46584E20705425252454C4C493632B21307F00050745445D46550D9D20E16321
C432D6E2010E6E1632D6E2010E66C7D1DBBF1D6E2010E66C7D1DBBF1EF532936
32B213006000703534F42554D46570D9D20E16323CE2284E203005C49584E204
044054584279E1AFE22D9D203FBF184E20503534F42554B21305BF22D9D20599
A184E2060355414253484E0CF1E0CF13FBF1B21305DF2293632B2130CA000603
5541425348460D9D20E1632AAF028DBF19C2A24563284E203005C49597632B44
021C432D6E2020C613D6E203036F6C6E1632FDAA1D6E203036F6C6EEDA147A20
54BA154BA1B21301C432D6E2020C623D6E204026563747E1632D6E203036F6C6
84E205014C4C4D46584E206035F42545D46578BF18B9C13CE22D6E203036F6C6
4B2A2D5CE1AFE22D9D20C9432D9D20E1632B9DE193632B2130C9432D9D20E163
2EBBE193632B2130B21305BF22D9D20C9432D9D20E1632CFCE193632B2130C94
32D9D20E1632D5CE193632B2130B21305DF221C432D6E20208747D6E20203717
D6E2010E6D6E20203613D6E20203623E16323C032D6E20208747D6E2010E66C7
D1D6E20203717D6E2010E66C7D12ABF184E2040D4B4D465D6E2010E684E20604
6562657763778BF1E89C1DBBF18DBF178BF184E2050D4657454E48DBF18B9C13
3920200000000000002050FA1DBBF184E206034F4F425443578BF17792000000
00000000540000000000000054090DA1F1AA1339201000000000000010EEDA18
72B184E2030254423DBBF1D6E203036F6C64B2A2D5CE184E204034B4E47484E2
04005B4E474EF3A184E206034F4F425443590DA1F1AA13392010000000000000
10EEDA19C2A276BA1872B184E203025442376BA176BA1D6E203036F6C6EEDA17
8BF1599A184E20503534550544E0CF1E0CF1339201000000000000210D6E2030
36F6C6EEDA1D6E203036F6C684E20703534F42554D4653CE229C2A2AFE22D9D2
078BF1B0BC1C2A2090000020276BA1233A284E2030449435B21305DF223CE227
8BF1D6E2020C613D6E20203613EB3A1AFE22D9D20C53A25D2C13CE2278BF1D6E
2020C623D6E20203623EB3A1AFE22D9D2045632D6E2020C62397632DCC022ABF
13CE2284E203005C4959C2A2167E1AFE22D9D202ABF184E20603584F475D465B
21305DF22ED2A2387C145632D6E20402656374797632DCC02B21305BF228DBF1
5DF22B21305BF22D9D2045632D6E2020C62397632DCC02C53A2472C1B21305DF
22D6E2010E69C2A290DA178BF145632D6E2010E697632DCC023CE22F88E1AFE2
2D9D20C53A2472C1B21305DF2284E206055E4D4B4D46584E20503534550544DE
032C53A2313C19B632EF532D6E204026563747A59C18DBF1D6E2020C623EF532
EF5324563284E203005C495976329C2A28350293632B21303B6006035F42545D
46560D9D20E16321C432D6E20208747D6E20203717E163247A20B21309C2A233
92010000000000002203013278BF1C4232339201000000000000120387C178BF
11C432D6E2030878647D6E2030378647E16329C2A2D6E202087478B9C10A132D
6E2010E6D6E2030878647D6E20208747D6E2010E66C7D178BF1E89C18DBF13CE
2278BF1339201000000000000810D5CE1AFE22D9D208DBF13392010000000000
00810B21305DF229C2A276BA178BF1D6E2030878647DBBF16C7D1E0CF176BA19
2CF1D6E2030378647DBBF12ABF16C7D1D6E20203717D6E2010E66C7D176BA170
4D145632D6E203037864797632DCC02704D145632D6E203087864797632DCC02
C423245632D6E2020874797632DCC0245632D6E2020371797632DCC02C2A2074
0006302136302930213330283021343027302135302230223030233021302130
2132362BC130132D6E20208747D6E20308786473F2A2A9CF16C7D176BA145632
D6E2020874797632DCC02D6E20203717D6E2030378647E0CF16C7D176BA14563
2D6E2020371797632DCC02C4232D6E20208747D6E20203717EF532EF53293632
B2130053006046562657763760D9D20E16321C432D6E2010E6E163278BF1E89C
184E205055E4346545DBBF184E205055E4346545DBBF176BA184E203005C495B
0BC1C2A20700000276BA1D6E2010E6B0BC176BA1C2A20700000276BA1DBBF176
BA1C2A20700000276BA1D13A284E2030449435EF53293632B2130BE000306494
743047A2047A20E1B20F100080000800000000C3424242C300E1B20F10008000
08000000C366242764C700E1B20F1000800008000000C143426624E700E1B20F
1000800008000000E7A5242424E700E1B20F1000800008000000E7A5662424E7
00E1B20F1000800008000000C366246624E700B213047A20E1B20F1000800008
00000000008181810000E1B20F10008000080000000081C3C0830000E1B20F10
0080000800000000808181C30000E1B20F10008000080000000042C3C3C30000
E1B20F1000800008000000004281C3C30000E1B20F10008000080000000081C3
81C30000B2130B21308D1006044943505D46560D9D20E1632E89C11C432D6E20
30662737D6E203047F637E1632634E1D6E203066273784E206034F4F4254435E
89C1DBBF1E97C1C53A2EEDA1779200000000000000070000000000000007090D
A1E4A20510008000000000000000E4A20510008000000000000000614E13CE22
D6E203066273778BF133920100000000000001050FA1D6BB176BA1ED2A2D4EB1
AFE22599A15DF22AE8C1D6E203047F63784E20402444744578BF1F1AA1DBBF1A
23B11C432D6E201007D6E203036F6C6E1632634E1D6E203047F63784E206034F
4F4254435E89C1DBBF1E97C1C53A2EEDA1779200000000000000070000000000
000007090DA12ABF1E4A20510008000000000000000E4A205100080000000000
00000614E13CE22D6E203047F63778BF133920100000000000001050FA1D6BB1
76BA1ED2A2D4EB1AFE22599A15DF22AE8C13CE22D6E203047F63778BF1339201
00000000000001050FA1D6BB176BA1ED2A2D4EB178BF1D6E203036F6C6683A21
67E16F8E1AFE22ED2A25BF229C2A25DF2284E2030649474DBBF16C7D1D6E2010
076C7D1DBBF1C9432D9D20E16324E4E193632B2130C9432D9D20E1632654E193
632B2130EF3A1EF532EF5328DBF193632B2130F83004007C6169740D9D20E163
2916C14563284E204064C4743597632DCC0284E20503545242544B7FC1456328
4E203024254497632DCC02C2A203700023724405458472037205C495720372D4
4524C4720372540535E4457203723534F425547223537205B4E4747293537234
B4E47472130273B7FC130132DCC02C423247A20E4A20510004F3010146030040
0E4A20510000000000000000000B2130F76C1E4A20510003800000000000000E
4A20510000400000000000000614E1634E1DCC0247A20E4A2051000000000000
0000000E4A20510000000000000000000B21300F2E184E2040442575243C032C
2A20D0000F5F5F5F54563284E203094E40597632DCC02ED2A2472C184E204064
94E40584E2040D4F46554AAF028DBF1DE0329C2A2313C19B63284E204064C474
35F76C1C2A2096000B764C4743502440545840205C495022425440294E40502D
44524C4023534F425540205B4E4740234B4E47402540535E445D7B7FC1EFE029
3632B21302C63"
END_ASC
And for the HP28:
--------------------chess.28----------------------------------
BEGIN_SRC chess.28s
The program follows:
On the HP-28 remember to clear flags 35 and 36 before playing since it
requires numeric evaluation to work.
ERRBELL:<< 440 .1 BEEP
>>
[A2BB]
PPAR: { (-104,2) (32,33) constant 1 (0,0) }
[A11]
DRWB: << 2 SF
"{[(1,2)(2,3)(3,2)[(1,2)(2,2)(3,2)(2,3)(2,4)(3,4)[(1,2)(2,2)(3,2)(2,3)(2
,4)[(1,2)(2,2)(3,2)(1,3)(2,3)(3,3)(1,4)(3,4)[(1,2)(2,2)(3,2)(2,3)(1,4)(3,4)[(1,2
)(2,2)(3,2)(1,3)(2,3)(3,3)(2,4" STR-> 21 -> pict n
<< CLLCD (1,1)
WHILE 99 n >= INPUT 2 FS? AND
REPEAT n BDGT DUP ABS SWAP SIGN -> p col
<<
IF p 0 SAME
THEN
IF n DUP 10 / IP + 2 MOD
THEN 1 3
FOR j 2 4
FOR k DUP j k R->C + PIXEL
NEXT
NEXT
END
ELSE
IF p 7 SAME
THEN (-20,2) +
ELSE DUP 'pict' p GET
IF col -1 SAME
THEN NEG SWAP (4,6) + SWAP
END DUP ROT CON + ARRY-> LIST-> SWAP
START PIXEL
NEXT
END
END
>> (4,0) + n 1 + 'n' STO
END DROP
>>
IF 2 FS?
THEN FINP
END
>>
[318B]
DIS: << DISS LCD-> AND ROT ROT DISP LCD-> OR ->LCD
>>
[7DEB]
DISS isn't a program, it is really a string type the following exactly as is:
DISS: << "" 1 105 START 0 CHR + NEXT 106 137 START 255 CHR + NEXT DUP + DUP +
>> EVAL 'DISS' STO
The checksum is [0] for the created DISS object.
INPUT: <<
WHILE KEY
REPEAT -> st
<<
IF st SIZE 1 SAME
THEN INP 2 4 SUB st + DUP 'INP' STO 1 DIS
ELSE
IF st "ENTER" SAME
THEN 2 CF
END
END
>>
END
>>
[811D]
STBRD: "[7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4 2 3 5 6 3 2 4 7 7 1 1 1 1 1
1 1 1 7 7 0 0 0 0 0 0 0 0 7 7 0 0 0 0 0 0 0 0 7 7 0 0 0 0 0 0 0 0 7 7 0 0 0 0 0
0 0 0 7 7 -1 -1 -1 -1 -1 -1 -1 -1 7 7 -4 -2 -3 -5 -6 -3 -2 -4 7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7 7 7"
[6BC7]
MOVE: << 6 CF
IF INP "QUIT" ==
THEN 1 SF CLMF
ELSE
IF INP "HALT" ==
THEN HALT
ELSE
IF INP "SWAP" ==
THEN
<< 'BRD' SWAP GET
IF DUP 7 <>
THEN NEG
END
>> -> fix
<< 20 50
FOR j 1 8
FOR k 119 j k + DUP ROT ROT - DUP2 fix EVAL SWAP fix EVAL
'BRD' DUP ROT 5 PICK SWAP PUT 4 PICK ROT PUT DROP2
NEXT 10
STEP
IF EPSNT
THEN 119 'EPSNT' STO-
END
IF 5 DUP FS?
THEN CF
ELSE SF
END 6 SF CKNG PKNG 'CKNG' STO 'PKNG' STO SCORE NEG 'SCORE' STO
MTBL NEG 'MTBL' STO
>>
ELSE PLMV
END
IF 6 FS?
THEN CPMV
ELSE "Illegal move" 4 DIS ERRBELL
END
END
END
>>
[AD3B]
FINP: << 2 SF
WHILE 2 FS?
REPEAT INPUT
END
>>
[2030]
MVGEN: << 3 CF {} DUP -> p sq xt
<< p BDGT DUP SIGN SWAP ABS
<< xt + 'xt' STO p SWAP R->C sq + 'sq' STO
>> -> col pce admov
<<
<< p + DUP BDGT DUP DUP DUP
IF
THEN 3 SF
END
IF 7 <> SWAP SIGN col <> AND
THEN
IF DUP NOT
THEN DROP i
ELSE 1 SWAP R->C
END admov EVAL
ELSE DROP2
END
>> -> chk
<<
<< STR->
START 0
DO OVER + DUP chk EVAL
UNTIL 3 FS?C
END DROP2
NEXT
>> -> mmv
<< {
<<
<< -> tos
<<
IF tos 10 / IP DUP 2 SAME SWAP 9 SAME OR
THEN 2 5
FOR m tos DUP BDGT m col * 10 + SWAP R->C admov EVAL
NEXT 0
ELSE tos 1
END
>>
>> -> promote
<<
<< DUP
IF DUP EPSNT SAME
THEN i NEG admov EVAL DROP
ELSE
IF BDGT DUP DUP 7 <> SWAP SIGN col + NOT AND
THEN SWAP
IF promote EVAL
THEN 1 ROT R->C admov EVAL
ELSE DROP
END
ELSE DROP2
END
END
>> -> capchk
<< 10 col * p + DUP DUP
IF BDGT
THEN DROP
ELSE
IF promote EVAL
THEN i admov EVAL
ELSE DROP
END
IF p 10 / IP DUP 3 SAME SWAP 8 SAME OR
THEN 20 col * p + DUP
IF BDGT
THEN DROP
ELSE 2 EPSNT R->C admov EVAL
END
END
END 1 DUP2 + capchk EVAL - capchk EVAL
>>
>>
>>
<< "8 -8 12 -12 19 -19 21 -21 1 8" STR->
START chk EVAL
NEXT
>>
<< "9 -9 11 -11 1 4" mmv EVAL
>>
<< "1 -1 10 -10 1 4" mmv EVAL
>>
<< "1 -1 9 -9 10 -10 11 -11 1 8" mmv EVAL
>>
<< "1 -1 9 -9 10 -10 11 -11 1 8" STR->
START chk EVAL
NEXT
IF p 25 SAME p 95 SAME OR
THEN
IF p 1 + BDGT NOT p 2 + BDGT NOT AND p 3 + BDGT ABS 4 SAME
AND
THEN p 2 + p 3 + p 1 + R->C admov EVAL
END
IF p 1 - BDGT NOT p 2 - BDGT NOT AND p 3 - BDGT NOT AND p
4 - BDGT ABS 4 SAME AND
THEN p 2 - p 4 - p 1 - R->C admov EVAL
END
END
>> } pce GET EVAL
>>
>>
>> xt sq
>>
>>
[79AD]
BDGT: << 'BRD' SWAP GET
>>
[FE0E]
ALLMV: << {} DUP -> col sq xt
<< 21 98
FOR n
IF n BDGT DUP SIGN col SAME SWAP 7 <> AND
THEN n MVGEN sq + 'sq' STO xt + 'xt' STO
END
NEXT xt sq
>>
>>
[687C]
PLMV: << 4 CF INP CVRTSQ INP 3 4 SUB CVRTSQ -> frs tos
<<
IF 4 FC? frs BDGT DUP 0 > SWAP 7 <> AND AND
THEN frs MVGEN frs tos R->C POS DUP
IF 0 SAME
THEN DROP
ELSE GET frs tos R->C MKMV 6 SF
END
END
>>
>>
[9583]
CVRTSQ: << DUP 1 DUP SUB "ABCDEFGH" SWAP POS SWAP 2 DUP SUB "12345678" SWAP POS
-> x y
<<
IF x NOT y NOT OR
THEN 4 SF
ELSE x 10 DUP y * + +
END
>>
>>
[DA90]
MKMV: << -> xt sq
<< sq C->R xt C->R -> frs tos t z
<<
IF frs PKNG SAME
THEN tos 'PKNG' STO
ELSE
IF frs CKNG SAME
THEN tos 'CKNG' STO
END
END 'BRD' DUP frs BDGT DUP DUP SIGN SWAP ABS -> col ptyp
<< tos SWAP PUT frs 0 DUP 'EPSNT' STO PUT
IF xt i <>
THEN
IF t 1 SAME
THEN z GTML MTUPD
ELSE
IF t 2 SAME
THEN frs 10 col * + 'EPSNT' STO
ELSE
IF t NOT
THEN 'BRD' tos 10 col * - 0 PUT col NEG GTML MTUPD
ELSE
IF t 20 >
THEN 'BRD' DUP z t BDGT PUT t 0 PUT
ELSE z GTML MTUPD 'BRD' tos t 10 - DUP GTML col GTML
SWAP - MTUPD PUT
END
END
END
END
END
>>
>>
>>
>>
[B441]
MTUPD: << DUP 'MTBL' STO+ SCUPD
>>
[3E44]
SCUPD: << 'SCORE' STO+
>>
[760]
GTML: << DUP SIGN SWAP ABS -> col pce
<< [1 3.25 3.5 5 9 120 ] pce
IFERR GET
THEN DROP2 0
ELSE col *
END
>>
>>
[7C24]
UNMKMV: << -> xt sq
<< sq C->R xt C->R -> frs tos t z
<< 'BRD' DUP tos BDGT DUP SIGN -> col
<< frs SWAP PUT tos 0 PUT
IF tos PKNG SAME
THEN frs 'PKNG' STO
ELSE
IF tos CKNG SAME
THEN frs 'CKNG' STO
END
END
IF xt i <>
THEN
IF t 1 SAME
THEN z GTML NEG MTUPD 'BRD' tos z PUT
ELSE
IF t 2 SAME
THEN z 'EPSNT' STO
ELSE
IF t NOT
THEN 'BRD' tos 10 col * - col NEG PUT col GTML MTUPD
ELSE
IF t 20 >
THEN 'BRD' DUP t z BDGT PUT z 0 PUT
ELSE 'BRD' DUP frs col PUT tos t 10 - DUP GTML z GTML -
col GTML - MTUPD PUT
END
END
END
END
END
>>
>>
>>
>>
[3D58]
CPMV: << MAXR -1 SEARCH DROP "My move" 3 DIS DUP2 SHOWMV MKMV ERRBELL
>>
[A946]
GETMV: << -> n
<< n GET SWAP n GET SWAP
>>
>>
[BB18]
SCOREMV:<< "PLY = " PLY ->STR + "." + SWAP ->STR + 3 DIS
IF PLY 2 ==
THEN DROP2 SCORE
ELSE NEG SEARCH ROT ROT DROP2
END
>>
[8F08]
SHOWMV: << C->R UNCVT SWAP UNCVT SWAP + 4 DIS DROP
>>
[106B]
SEARCH: << 1 'PLY' STO+ -> l1 col
<< MAXR col * { i i } -> l2 best
<< col ALLMV SORTMV DUP SIZE
IF col 0 >
THEN
<< >=
>>
<< <
>>
ELSE
<< <=
>>
<< >
>>
END -> xt sq n c1 c2
<<
DO xt n GET sq n GET DUP2 MKMV
IF PLY 1 SAME
THEN DUP2 SHOWMV
END DUP C->R SWAP DROP DUP MVGEN DROP SIZE 200 / SWAP COORDS
DUP (4.5,4.5) - ABS 10 * INV RD2 SWAP col 0 > CKNG PKNG IFTE COORDS - ABS 10 * 1
+ INV RD2 + + col * DUP NEG SCUPD ROT ROT l2 col n SCOREMV
IF PLY 1 SAME
THEN DUP ->STR "mv sc " SWAP + 2 DIS
END
IF DUP l1 c1 EVAL
THEN 8 CF
IF DUP l2 c2 EVAL
THEN 'l2' STO DUP2 2 ->LIST 'best' STO
ELSE DROP
END
ELSE 'l2' STO 8 SF
END n 1 - DUP 'n' STO
IF NOT
THEN 8 SF
END UNMKMV SCUPD
UNTIL 8 FS?
END
>> best LIST-> DROP l2
>>
>> 'PLY' 1 STO-
>>
[322]
SORTMV: << -> xt sq
<< {} 1 22
START DUP
NEXT 21 ->LIST DUP -> xht sht
<< 1 xt SIZE
FOR n xht xt n GET DUP C->R DROP
IF DUP 18 >
THEN DROP 18
END 1 + DUP xht SWAP GET ROT + OVER sht SWAP DUP2 GET sq n GET +
PUT 'sht' STO PUT 'xht' STO
NEXT 'xt' STO 'sq' STO "6 16 9 13 8 14 7 15 2 20 3 1 1 12" STR->
START xt xht 3 PICK GET + 'xt' STO sq sht ROT GET + 'sq' STO
NEXT xt sq
>>
>>
>>
[5CF9]
UNCVT: << 10 / DUP IP 1 - ->STR SWAP FP 10 * "ABCDEFGH" SWAP DUP SUB SWAP +
>>
[4BED]
COORDS: << 10 / DUP IP 1 - SWAP FP 10 * R->C
>>
[D97D]
RD2: << 100 * IP 100 /
>>
[16DD]
PLAY: << STBRD STR-> 'BRD' STO
"0'PLY'0'MTBL'0'EPSNT'0'SCORE'25'PKNG'95'CKNG'1 6" STR->
START STO
NEXT "1 3 4 5 1 4" STR->
START CF
NEXT
DO " " 'INP' STO DRWB MOVE
UNTIL 1 FS?
END
"{PLY BRD INP MTBL SCORE PKNG CKNG EPSNT}" STR-> PURGE
>>
[482E]
END_SRC
--------------------chess.28----------------------------------
--